// 判断当前页面是否为抖音来客页面
export function isMatch() {
  // 找到并检查"评价管理"菜单项
  const menuItems = Array.from(document.querySelectorAll('div[class*="menu-item"]'));
  const evaluationMenuItem = menuItems.find(item => 
    item.textContent.includes('评价管理')
  );
  
  console.log('来客页面匹配结果:', {
    hasEvaluationMenu: !!evaluationMenuItem,
    menuItemsCount: menuItems.length
  });

  return !!evaluationMenuItem;
}

// 获取滚动容器选择器
export function getScrollContainer() {
  // 1. 先尝试找到评价列表容器
  const commentList = document.querySelector('[class*="comment-list"]');
  if (commentList) {
    return '[class*="comment-list"]';
  }

  // 2. 如果找不到评价列表，尝试找到主内容区域
  const mainContent = document.querySelector('[class*="main-content"]');
  if (mainContent) {
    return '[class*="main-content"]';
  }

  // 3. 如果都找不到，返回body
  return 'body';
}

// 等待数据加载
async function waitForDataLoad() {
  // 先跳转到评价管理页面
  const menuItems = Array.from(document.querySelectorAll('div[class*="menu-item"]'));
  const evaluationMenuItem = menuItems.find(item => 
    item.textContent.includes('评价管理')
  );
  
  if (!evaluationMenuItem) {
    throw new Error('未找到评价管理菜单项');
  }
  
  console.log('点击评价管理菜单项');
  evaluationMenuItem.click();
  
  // 等待页面加载
  await new Promise(resolve => setTimeout(resolve, 2000));
  
  // 等待评价数据加载
  const maxAttempts = 20; // 最多等待10秒
  for (let i = 0; i < maxAttempts; i++) {
    const nodes = document.querySelectorAll('[class*="comment-data"]');
    if (nodes.length > 0) {
      console.log('评价数据加载完成');
      return;
    }
    await new Promise(resolve => setTimeout(resolve, 500));
  }
  throw new Error("等待评价数据超时");
}

// 提取评分数据
function extractScoreItems() {
  // 采集 class 名包含 scoreItemLeft 且内容为"评价"的元素
  const scoreNodes = Array.from(
    document.querySelectorAll('[class*="score-"]')
  )[0];
  
  if (!scoreNodes) {
    console.log('未找到评分数据');
    return [];
  }
  
  return [{
    label: '评分',
    value: scoreNodes.innerText,
    html: scoreNodes.innerHTML
  }];
}

// 提取评论数据
function extractCommentItems() {
  const commentNodes = document.querySelectorAll('[class*="comment-data"]');
  return Array.from(commentNodes).map(node => ({
    label: node.innerText.split("\n")[0],
    value: node.innerText.split("\n")[2],
    html: node.innerHTML,
    className: node.className
  }));
}

// 封装批量发送消息
function sendBatchExtracted(data, batchIndex = 0, isLastBatch = true) {
  chrome.runtime.sendMessage({
    action: 'batchExtracted',
    batchIndex,
    isLastBatch,
    data,
    template: window._currentTemplateId
  });
}

// 提取数据
export async function extract(scope = 'current') {
  window._shouldStopExtraction = false; // 每次抓取前重置
  console.log('开始提取数据...', '抓取范围:', scope);
  
  // 设置全局变量
  window._currentTemplateId = 'laike';
  
  try {
    // 等待数据加载
    await waitForDataLoad();
    
    // 提取评分数据
    const scoreItems = extractScoreItems();
    console.log('评分数据:', scoreItems);
    
    // 提取评论数据
    const commentItems = extractCommentItems();
    console.log('评论数据:', commentItems);
    
    // 转换为统一的数据结构
    const groups = [];
    
    // 添加评分分组
    if (scoreItems && scoreItems.length > 0) {
      groups.push({
        groupTitle: '评分数据',
        cards: scoreItems.map(item => ({
          label: item.label || '评分',
          value: item.value || ''
        }))
      });
    }
    
    // 添加评论分组
    if (commentItems && commentItems.length > 0) {
      groups.push({
        groupTitle: '评论数据',
        cards: commentItems.map(item => ({
          label: item.label || '',
          value: item.value || ''
        }))
      });
    }
    
    console.log('数据提取完成:', groups);
    
    // 发送数据（来客模板只有当前页面，所以直接发送）
    sendBatchExtracted(groups, 0, true);
    
    return groups;
  } catch (error) {
    console.error('数据提取失败:', error);
    // 发送空数据表示完成
    sendBatchExtracted([], 0, true);
    throw error;
  }
}

// 获取商户信息
export async function getMerchantInfo() {
  // 等待商户信息元素加载
  const waitForMerchantInfo = async () => {
    const maxAttempts = 20; // 最多等待10秒
    for (let i = 0; i < maxAttempts; i++) {
      // 账户ID
      const accountIdTitleDiv = Array.from(document.querySelectorAll('div[class*="account-title"]'))
        .find(div => div.textContent.includes('账户ID'));
      let accountId = "";
      if (accountIdTitleDiv) {
        const accountIdContentDiv = accountIdTitleDiv.parentElement.nextElementSibling;
        if (accountIdContentDiv) {
          accountId = accountIdContentDiv.textContent.trim().match(/\d{10,}/)?.[0] || "";
        }
      }

      // 商户名称
      const merchantNameDiv = Array.from(document.querySelectorAll('div[class*="user-name"]'))
        .find(div => div.textContent.trim().length > 0);

      if (accountId && merchantNameDiv) {
        return {
          merchantId: accountId,
          merchantName: merchantNameDiv.textContent.trim(),
        };
      }
      
      await new Promise(resolve => setTimeout(resolve, 500));
    }
    throw new Error("等待商户信息超时");
  };

  const data = await waitForMerchantInfo();
  console.log("抖音来客 - 获取到商户信息:", data);
  return data;
}
